﻿using System;
using System.Collections.Generic;

namespace WUDI.ECharts.Series.Funnel.MarkArea
{
	/// <summary>
	/// Object
	/// 图表标域，常用于标记图表中某个范围的数据，例如标出某段时间投放了广告。
	/// </summary>
	public class MarkArea
	{

		/// <summary>
		/// boolean
		/// 图形是否不响应和触发鼠标事件，默认为 false，即响应和触发鼠标事件。
		/// </summary>
		public Boolean silent { get; set; } = false;

		/// <summary>
		/// Object
		/// 标域文本配置。
		/// </summary>
		public WUDI.ECharts.Series.Funnel.MarkArea.Label.Label label { get; set; }

		/// <summary>
		/// Object
		/// 该标域的样式。
		/// </summary>
		public WUDI.ECharts.Series.Funnel.MarkArea.ItemStyle.ItemStyle itemStyle { get; set; }

		/// <summary>
		/// Object
		/// 高亮的标域样式
		/// </summary>
		public WUDI.ECharts.Series.Funnel.MarkArea.Emphasis.Emphasis emphasis { get; set; }

		/// <summary>
		/// *
		/// 标域的数据数组。每个数组项是一个两个项的数组，分别表示标域左上角和右下角的位置，每个项支持通过下面几种方式指定自己的位置
		/// 通过 x, y 属性指定相对容器的屏幕坐标，单位像素，支持百分比。
		/// 当多个属性同时存在时，优先级按上述的顺序。
		/// data: [
		///     [
		///         {
		///             name: '两个屏幕坐标之间的标域',
		///             x: 100,
		///             y: 100
		///         }, {
		///             x: '90%',
		///             y: '10%'
		///         }
		///     ]
		/// ]
		/// </summary>
		public dynamic data { get; set; }

		/// <summary>
		/// boolean
		/// 是否开启动画。
		/// </summary>
		public Boolean animation { get; set; } = false;

		/// <summary>
		/// number
		/// 是否开启动画的阈值，当单个系列显示的图形数量大于这个阈值时会关闭动画。
		/// </summary>
		public int animationThreshold { get; set; } = 2000;

		/// <summary>
		/// number
		/// 初始动画的时长，支持回调函数，可以通过每个数据返回不同的 delay 时间实现更戏剧的初始动画效果：
		/// animationDuration: function (idx) {
		///     // 越往后的数据延迟越大
		///     return idx * 100;
		/// }
		/// </summary>
		public int animationDuration { get; set; } = 1000;

		/// <summary>
		/// string
		/// 初始动画的缓动效果。不同的缓动效果可以参考 缓动示例。
		/// </summary>
		public String animationEasing { get; set; } = "cubicOut";

		/// <summary>
		/// number,Function
		/// 初始动画的延迟，支持回调函数，可以通过每个数据返回不同的 delay 时间实现更戏剧的初始动画效果。
		/// 如下示例：
		/// animationDelay: function (idx) {
		///     // 越往后的数据延迟越大
		///     return idx * 100;
		/// }
		/// 也可以看该示例
		/// </summary>
		public dynamic animationDelay { get; set; } = 0;

		/// <summary>
		/// number,Function
		/// 数据更新动画的时长。
		/// 支持回调函数，可以通过每个数据返回不同的 delay 时间实现更戏剧的更新动画效果：
		/// animationDurationUpdate: function (idx) {
		///     // 越往后的数据延迟越大
		///     return idx * 100;
		/// }
		/// </summary>
		public dynamic animationDurationUpdate { get; set; } = 300;

		/// <summary>
		/// string
		/// 数据更新动画的缓动效果。
		/// </summary>
		public String animationEasingUpdate { get; set; } = "cubicOut";

		/// <summary>
		/// number,Function
		/// 数据更新动画的延迟，支持回调函数，可以通过每个数据返回不同的 delay 时间实现更戏剧的更新动画效果。
		/// 如下示例：
		/// animationDelayUpdate: function (idx) {
		///     // 越往后的数据延迟越大
		///     return idx * 100;
		/// }
		/// 也可以看该示例
		/// </summary>
		public dynamic animationDelayUpdate { get; set; } = 0;

	}
}
